#Boa:Frame:ABMClientes

import wx
import wx.richtext
import consultasBD
import utiles
import re

def create(parent,tipo="alta",idcliente=""):
    return ABMClientes(parent,tipo,idcliente)

[wxID_ABMCLIENTES, wxID_ABMCLIENTESBUTTON1, wxID_ABMCLIENTESBUTTON2, 
 wxID_ABMCLIENTESBUTTON4, wxID_ABMCLIENTESCHECKBOX1, wxID_ABMCLIENTESCHOICE1, 
 wxID_ABMCLIENTESCHOICE2, wxID_ABMCLIENTESCHOICE3, wxID_ABMCLIENTESCHOICE4, 
 wxID_ABMCLIENTESCOMBOBOX1, wxID_ABMCLIENTESLISTBOX1, wxID_ABMCLIENTESPANEL1, 
 wxID_ABMCLIENTESRADIOBUTTON1, wxID_ABMCLIENTESRADIOBUTTON2, 
 wxID_ABMCLIENTESRICHTEXTCTRL1, wxID_ABMCLIENTESSTATICTEXT1, 
 wxID_ABMCLIENTESSTATICTEXT10, wxID_ABMCLIENTESSTATICTEXT11, 
 wxID_ABMCLIENTESSTATICTEXT12, wxID_ABMCLIENTESSTATICTEXT13, 
 wxID_ABMCLIENTESSTATICTEXT14, wxID_ABMCLIENTESSTATICTEXT15, 
 wxID_ABMCLIENTESSTATICTEXT16, wxID_ABMCLIENTESSTATICTEXT17, 
 wxID_ABMCLIENTESSTATICTEXT18, wxID_ABMCLIENTESSTATICTEXT19, 
 wxID_ABMCLIENTESSTATICTEXT2, wxID_ABMCLIENTESSTATICTEXT3, 
 wxID_ABMCLIENTESSTATICTEXT4, wxID_ABMCLIENTESSTATICTEXT5, 
 wxID_ABMCLIENTESSTATICTEXT6, wxID_ABMCLIENTESSTATICTEXT7, 
 wxID_ABMCLIENTESSTATICTEXT8, wxID_ABMCLIENTESSTATICTEXT9, 
 wxID_ABMCLIENTESTEXTCTRL1, wxID_ABMCLIENTESTEXTCTRL10, 
 wxID_ABMCLIENTESTEXTCTRL11, wxID_ABMCLIENTESTEXTCTRL12, 
 wxID_ABMCLIENTESTEXTCTRL2, wxID_ABMCLIENTESTEXTCTRL3, 
 wxID_ABMCLIENTESTEXTCTRL4, wxID_ABMCLIENTESTEXTCTRL5, 
 wxID_ABMCLIENTESTEXTCTRL6, wxID_ABMCLIENTESTEXTCTRL7, 
 wxID_ABMCLIENTESTEXTCTRL8, wxID_ABMCLIENTESTEXTCTRL9, 
] = [wx.NewId() for _init_ctrls in range(46)]

class ABMClientes(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_ABMCLIENTES, name='ABMClientes',
              parent=prnt, pos=wx.Point(630, 60), size=wx.Size(591, 549),
              style=wx.DEFAULT_FRAME_STYLE, title='Clientes')
        self.SetClientSize(wx.Size(583, 522))
        self.Enable(True)

        self.panel1 = wx.Panel(id=wxID_ABMCLIENTESPANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(583, 522),
              style=wx.TAB_TRAVERSAL)

        self.staticText1 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT1,
              label='Nro. Cliente', name='staticText1', parent=self.panel1,
              pos=wx.Point(16, 8), size=wx.Size(57, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL1,
              name='textCtrl1', parent=self.panel1, pos=wx.Point(16, 24),
              size=wx.Size(80, 21), style=0, value='')
        self.textCtrl1.SetMaxLength(15)
        self.textCtrl1.SetEditable(False)
        self.textCtrl1.Enable(False)

        self.staticText2 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT2,
              label='Nombre', name='staticText2', parent=self.panel1,
              pos=wx.Point(96, 8), size=wx.Size(37, 13), style=0)

        self.textCtrl2 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL2,
              name='textCtrl2', parent=self.panel1, pos=wx.Point(96, 24),
              size=wx.Size(328, 21), style=0, value='')
        self.textCtrl2.SetEditable(False)
        self.textCtrl2.SetMaxLength(50)
        self.textCtrl2.Enable(False)

        self.staticText3 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT3,
              label='Tipo Documento', name='staticText3', parent=self.panel1,
              pos=wx.Point(96, 48), size=wx.Size(77, 13), style=0)

        self.choice1 = wx.Choice(choices=["DNI", "LC", "CI", "CUIL", "CUIT",
              "Pasaporte", "LE"], id=wxID_ABMCLIENTESCHOICE1, name='choice1',
              parent=self.panel1, pos=wx.Point(96, 64), size=wx.Size(104, 21),
              style=0)
        self.choice1.Enable(False)

        self.staticText4 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT4,
              label='Numero Documento', name='staticText4', parent=self.panel1,
              pos=wx.Point(200, 48), size=wx.Size(94, 13), style=0)

        self.textCtrl3 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL3,
              name='textCtrl3', parent=self.panel1, pos=wx.Point(200, 64),
              size=wx.Size(112, 21), style=0, value='')
        self.textCtrl3.SetEditable(False)
        self.textCtrl3.SetMaxLength(16)
        self.textCtrl3.Enable(False)

        self.staticText5 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT5,
              label='Situacion Fiscal', name='staticText5', parent=self.panel1,
              pos=wx.Point(320, 48), size=wx.Size(72, 13), style=0)

        self.choice2 = wx.Choice(choices=['Inscripto', 'Cons. Final',
              'Monotributo'], id=wxID_ABMCLIENTESCHOICE2, name='choice2',
              parent=self.panel1, pos=wx.Point(320, 64), size=wx.Size(104, 21),
              style=0)
        self.choice2.Enable(False)

        self.staticText6 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT6,
              label='Direccion', name='staticText6', parent=self.panel1,
              pos=wx.Point(96, 88), size=wx.Size(43, 13), style=0)

        self.textCtrl4 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL4,
              name='textCtrl4', parent=self.panel1, pos=wx.Point(96, 104),
              size=wx.Size(328, 21), style=0, value='')
        self.textCtrl4.SetMaxLength(50)
        self.textCtrl4.SetEditable(False)
        self.textCtrl4.Enable(False)

        self.staticText7 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT7,
              label='Localidad', name='staticText7', parent=self.panel1,
              pos=wx.Point(96, 168), size=wx.Size(44, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT8,
              label='Provincia', name='staticText8', parent=self.panel1,
              pos=wx.Point(183, 128), size=wx.Size(43, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT9,
              label='Pais', name='staticText9', parent=self.panel1,
              pos=wx.Point(96, 128), size=wx.Size(19, 13), style=0)

        self.choice3 = wx.Choice(choices=["Argentina", "Uruguay", "Brasil",
              "Chile", "Paraguay", "Peru", "otro"], id=wxID_ABMCLIENTESCHOICE3,
              name='choice3', parent=self.panel1, pos=wx.Point(96, 144),
              size=wx.Size(80, 21), style=0)
        self.choice3.Enable(False)
        self.choice3.Bind(wx.EVT_CHOICE, self.OnElijePais,
              id=wxID_ABMCLIENTESCHOICE3)

        self.choice4 = wx.Choice(choices=["SANTA FE", "ENTRE RIOS",
              "CORRIENTES", "BUENOS AIRES", "MISIONES",
              "CIUDAD DE BUENOS AIRES", "CORDOBA", "CHACO", "FORMOSA",
              "SANTIAGO DEL ESTERO", "TUCUMAN", "SALTA", "JUJUY", "CATAMARCA",
              "LA RIOJA", "SAN JUAN", "MENDOZA", "SAN LUIS", "LA PAMPA",
              "NEUQUEN", "RIO NEGRO", "CHUBUT", "SANTA CRUZ",
              "TIERRA DEL FUEGO", "sin especificar"],
              id=wxID_ABMCLIENTESCHOICE4, name='choice4', parent=self.panel1,
              pos=wx.Point(180, 144), size=wx.Size(148, 21), style=0)
        self.choice4.Enable(False)

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_ABMCLIENTESCOMBOBOX1,
              name='comboBox1', parent=self.panel1, pos=wx.Point(96, 184),
              size=wx.Size(232, 21), style=0, value='')
        self.comboBox1.SetLabel('')
        self.comboBox1.Enable(False)
        self.comboBox1.Bind(wx.EVT_TEXT, self.OnTextoIngresado,
              id=wxID_ABMCLIENTESCOMBOBOX1)
        self.comboBox1.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)

        self.listBox1 = wx.ListBox(choices=[], id=wxID_ABMCLIENTESLISTBOX1,
              name='listBox1', parent=self.panel1, pos=wx.Point(96, 208),
              size=wx.Size(216, 72), style=0)
        self.listBox1.Enable(False)
        self.listBox1.SetBackgroundColour(wx.Colour(212, 208, 200))
        self.listBox1.Bind(wx.EVT_LISTBOX, self.OnListBox,
              id=wxID_ABMCLIENTESLISTBOX1)

        self.staticText10 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT10,
              label='Codigo Postal', name='staticText10', parent=self.panel1,
              pos=wx.Point(96, 288), size=wx.Size(65, 13), style=0)

        self.textCtrl6 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL6,
              name='textCtrl6', parent=self.panel1, pos=wx.Point(96, 304),
              size=wx.Size(64, 21), style=0, value='')
        self.textCtrl6.SetEditable(False)
        self.textCtrl6.SetMaxLength(8)
        self.textCtrl6.Enable(False)

        self.staticText11 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT11,
              label='Telefono', name='staticText11', parent=self.panel1,
              pos=wx.Point(336, 168), size=wx.Size(42, 13), style=0)

        self.textCtrl7 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL7,
              name='textCtrl7', parent=self.panel1, pos=wx.Point(336, 184),
              size=wx.Size(232, 21), style=0, value='')
        self.textCtrl7.SetEditable(False)
        self.textCtrl7.SetMaxLength(40)
        self.textCtrl7.Enable(False)

        self.staticText12 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT12,
              label='e-mail', name='staticText12', parent=self.panel1,
              pos=wx.Point(336, 208), size=wx.Size(28, 13), style=0)

        self.textCtrl8 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL8,
              name='textCtrl8', parent=self.panel1, pos=wx.Point(336, 224),
              size=wx.Size(232, 21), style=0, value='')
        self.textCtrl8.SetEditable(False)
        self.textCtrl8.SetMaxLength(50)
        self.textCtrl8.Enable(False)

        self.checkBox1 = wx.CheckBox(id=wxID_ABMCLIENTESCHECKBOX1,
              label='Lista negra', name='checkBox1', parent=self.panel1,
              pos=wx.Point(496, 248), size=wx.Size(70, 13), style=0)
        self.checkBox1.SetValue(False)

        self.staticText13 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT13,
              label='Cumple', name='staticText13', parent=self.panel1,
              pos=wx.Point(336, 248), size=wx.Size(35, 13), style=0)

        self.textCtrl9 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL9,
              name='textCtrl9', parent=self.panel1, pos=wx.Point(336, 264),
              size=wx.Size(24, 21), style=0, value='00')
        self.textCtrl9.SetMaxLength(2)
        self.textCtrl9.SetEditable(False)
        self.textCtrl9.Enable(False)

        self.textCtrl10 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL10,
              name='textCtrl10', parent=self.panel1, pos=wx.Point(360, 264),
              size=wx.Size(24, 21), style=0, value='00')
        self.textCtrl10.SetMaxLength(2)
        self.textCtrl10.SetEditable(False)
        self.textCtrl10.Enable(False)

        self.textCtrl5 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL5,
              name='textCtrl5', parent=self.panel1, pos=wx.Point(336, 304),
              size=wx.Size(88, 21), style=0, value='')
        self.textCtrl5.SetEditable(False)
        self.textCtrl5.Enable(False)
        self.textCtrl5.SetMaxLength(10)

        self.staticText14 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT14,
              label='(dia / mes)', name='staticText14', parent=self.panel1,
              pos=wx.Point(392, 264), size=wx.Size(51, 13), style=0)

        self.staticText15 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT15,
              label='Observaciones', name='staticText15', parent=self.panel1,
              pos=wx.Point(96, 328), size=wx.Size(71, 13), style=0)

        self.richTextCtrl1 = wx.richtext.RichTextCtrl(id=wxID_ABMCLIENTESRICHTEXTCTRL1,
              parent=self.panel1, pos=wx.Point(96, 344), size=wx.Size(472, 64),
              style=wx.richtext.RE_MULTILINE, value='')
        self.richTextCtrl1.SetLabel('text')
        self.richTextCtrl1.SetEditable(False)
        self.richTextCtrl1.Enable(False)
        self.richTextCtrl1.SetBackgroundColour(wx.Colour(212, 208, 200))

        self.textCtrl12 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL12,
              name='textCtrl12', parent=self.panel1, pos=wx.Point(336, 432),
              size=wx.Size(88, 21), style=0, value='')
        self.textCtrl12.Enable(False)
        self.textCtrl12.SetEditable(False)

        self.staticText16 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT16,
              label='Resumen Cuenta Corriente', name='staticText16',
              parent=self.panel1, pos=wx.Point(96, 416), size=wx.Size(130, 13),
              style=0)

        self.radioButton1 = wx.RadioButton(id=wxID_ABMCLIENTESRADIOBUTTON1,
              label='SI, recibir resumen', name='radioButton1',
              parent=self.panel1, pos=wx.Point(96, 432), size=wx.Size(120, 13),
              style=0)
        self.radioButton1.SetValue(False)
        self.radioButton1.Enable(False)

        self.radioButton2 = wx.RadioButton(id=wxID_ABMCLIENTESRADIOBUTTON2,
              label='NO, recibir resumen', name='radioButton2',
              parent=self.panel1, pos=wx.Point(96, 448), size=wx.Size(112, 13),
              style=0)
        self.radioButton2.SetValue(False)
        self.radioButton2.Enable(False)

        self.staticText17 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT17,
              label='Direccion del resumen', name='staticText17',
              parent=self.panel1, pos=wx.Point(96, 464), size=wx.Size(104, 13),
              style=0)

        self.textCtrl11 = wx.TextCtrl(id=wxID_ABMCLIENTESTEXTCTRL11,
              name='textCtrl11', parent=self.panel1, pos=wx.Point(96, 480),
              size=wx.Size(320, 21), style=0, value='@')
        self.textCtrl11.Enable(False)
        self.textCtrl11.SetEditable(False)
        self.textCtrl11.SetMaxLength(50)

        self.button1 = wx.Button(id=wxID_ABMCLIENTESBUTTON1, label='',
              name='button1', parent=self.panel1, pos=wx.Point(493, 24),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBotonMultifuncion,
              id=wxID_ABMCLIENTESBUTTON1)

        self.button2 = wx.Button(id=wxID_ABMCLIENTESBUTTON2, label='Limpiar',
              name='button2', parent=self.panel1, pos=wx.Point(488, 448),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnLimpiar,
              id=wxID_ABMCLIENTESBUTTON2)

        self.button4 = wx.Button(id=wxID_ABMCLIENTESBUTTON4, label='Salir',
              name='button4', parent=self.panel1, pos=wx.Point(488, 480),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnSalir,
              id=wxID_ABMCLIENTESBUTTON4)

        self.staticText18 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT18,
              label='Fecha alta', name='staticText18', parent=self.panel1,
              pos=wx.Point(336, 288), size=wx.Size(50, 13), style=0)

        self.staticText19 = wx.StaticText(id=wxID_ABMCLIENTESSTATICTEXT19,
              label='Puntaje', name='staticText19', parent=self.panel1,
              pos=wx.Point(336, 416), size=wx.Size(37, 13), style=0)

    def __init__(self, parent,tipo,idcliente):
        self._init_ctrls(parent)
        self.inicializar()
        self.modificar = False
        if tipo == "alta":
            self.SetTitle("Alta de Clientes")
            self.button1.SetLabel("ALTA")
            self.parametrosAlta()
        elif tipo == "modificar":
            self.SetTitle("Modificacion de Clientes")
            self.button1.SetLabel("GUARDAR")
            if idcliente<>"":
                self.textCtrl1.SetLabel(idcliente)
                self.buscarCliente()
                self.habilitarGuardar()
            else:
                self.modificar = True
                self.button1.SetLabel("BUSCAR")
                self.habilitarBuscar()
                self.textCtrl1.SetFocus()
        elif tipo == "buscar":
            self.SetTitle("Buscar Clientes")
            self.button1.SetLabel("BUSCAR")
            self.habilitarBuscar()
            self.textCtrl1.SetFocus()
        else:
            self.SetTitle("Consulta de Clientes")
            self.button1.SetLabel("MODIFICAR")

    def inicializar(self):
        sql = "SELECT DISTINCT localidad FROM cliente WHERE 1 ORDER BY localidad"
        resultado = consultasBD.ordenCrudaDict(sql)
        for item in resultado:
            self.comboBox1.Append(item["localidad"])
        
    def parametrosAlta(self):
        self.choice1.SetSelection(0)
        self.choice2.SetSelection(1)
        self.choice3.SetSelection(0)
        sucursal = utiles.getSucursalActiva()
        if sucursal == "2":
            self.choice4.SetSelection(1)
        else:
            self.choice4.SetSelection(0)

    def OnElijePais(self, event):
        if self.choice3.GetSelection()<>0:
            posicion = len(self.choice4.GetItems())
            self.choice4.SetSelection(24)
            self.comboBox1.SetLabel("sin especificar")
        else:
            self.choice4.SetSelection(0)
            self.comboBox1.SetLabel("")

    def OnTextoIngresado(self, event):
        texto = self.comboBox1.GetLabel().upper()
        self.listBox1.Clear()
        for item in self.comboBox1.GetItems():
            if texto in item:
                self.listBox1.Append(item)

    def OnListBox(self, event):
        seleccion = self.listBox1.GetSelection()
        self.comboBox1.SetLabel(self.listBox1.GetItems()[seleccion])
        self.comboBox1.SetFocus()

    def OnKillFocus(self, event):
        localidad = self.comboBox1.GetLabel().upper()
        self.comboBox1.SetLabel(localidad)
        
    def validateEmail(email):
        if len(email) > 7:
            if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", email) != None:
                return True
        return False
        
    def validatePhoneNumber(self,phone):
        if len(phone) > 6:
            if re.match("^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", phone) != None:
                return True
        return False

    def validateCumple(self,dia="00",mes="00"):
        try:
            dia = int(dia)
            mes = int(mes)
        except:
            return False
        if dia == 0 and mes == 0:
            return True
        if dia<0 or mes<0:
            return False
        if mes in [1,3,5,7,8,10,12]:
            if dia>31: return False
            else: return True
        if mes in [4,6,9,11]:
            if dia>30: return False
            else: return True
        if mes in [2]:
            if dia>29: return False
            else: return True
        return False

    def validar_cuit(cuit):
        # validaciones minimas
        if len(cuit) != 13 or cuit[2] != "-" or cuit[11] != "-":
            return False
        base = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
        cuit = cuit.replace("-", "") # remuevo las barras
        # calculo el digito verificador:
        aux = 0
        for i in xrange(10):
            aux += int(cuit[i]) * base[i]

        aux = 11 - (aux - (int(aux / 11) * 11))
        if aux == 11: aux = 0
        if aux == 10: aux = 9
        return aux == int(cuit[10])

    def OnSalir(self, event):
        self.Close()

    def OnFocus(self, event):
        self.button2.SetFocus()
        
    def OnFocusButton1(self, event):
        self.button1.SetFocus()

    def habilitarAlta(self):
        self.textCtrl1.Enable(True) # codigo de cliente
        self.textCtrl1.SetEditable(False) #el codigo se asigna automaticamente
        self.textCtrl2.Enable(True) # nombre
        self.textCtrl2.SetEditable(True)
        self.choice1.Enable(True) # tipo documento
        self.choice1.SetSelection(0)
        self.textCtrl3.Enable(True) #numero documento
        self.textCtrl3.SetEditable(True)
        self.choice2.Enable(True) # situacion fiscal
        self.choice2.SetSelection(0)
        self.textCtrl4.Enable(True) # direccion
        self.textCtrl4.SetEditable(True)
        self.choice3.Enable(True) # pais
        self.choice3.SetSelection(0)
        self.choice4.Enable(True) # provincia
        self.choice4.SetSelection(0)
        self.comboBox1.Enable(True) # localidad
        self.comboBox1.SetEditable(True)
        self.listBox1.SetBackgroundColour(wx.Colour(255, 255, 255))
        self.listBox1.Refresh()
        self.textCtrl6.Enable(True) # CP
        self.textCtrl6.SetEditable(True)
        self.textCtrl7.Enable(True) # telefono
        self.textCtrl7.SetEditable(True)
        self.textCtrl8.Enable(True) # email
        self.textCtrl8.SetEditable(True)
        self.textCtrl9.Enable(True) # cumple: dia
        self.textCtrl9.SetEditable(True)
        self.textCtrl10.Enable(True) # cumple: mes
        self.textCtrl10.SetEditable(True)
        self.textCtrl11.Enable(True) # direcion envio resumen
        self.textCtrl11.SetEditable(True)
        self.richTextCtrl1.Enable(True) # observaciones
        self.richTextCtrl1.SetEditable(True)
        self.richTextCtrl1.SetBackgroundColour(wx.Colour(255, 255, 255))
        self.richTextCtrl1.Refresh()
        self.radioButton1.Enable(True) # SI, envio resumen
        self.radioButton2.Enable(True) # NO, envio resumen
        self.button1.SetLabel("GUARDAR")
        self.textCtrl2.SetFocus() # nombre cliente

    def habilitarBuscar(self):
        self.textCtrl1.Enable(True) # numero cliente
        self.textCtrl1.SetEditable(True)
        self.textCtrl2.Enable(True) # nombre
        self.textCtrl2.SetEditable(True)
        self.textCtrl2.Bind(wx.EVT_KILL_FOCUS, self.OnFocusButton1)
        self.choice1.Enable(True) # tipo documento
        self.choice1.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
        self.textCtrl3.Enable(True) #numero documento
        self.choice2.Enable(True) # situacion fiscal
        self.choice2.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
        self.textCtrl4.Enable(True) # direccion
        self.textCtrl5.Enable(True) # fecha alta
        self.choice3.Enable(True) # pais
        self.choice3.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
        self.choice4.Enable(True) # provincia
        self.choice4.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
        self.comboBox1.Enable(True) # localidad
        self.comboBox1.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
        self.textCtrl6.Enable(True) # CP
        self.textCtrl7.Enable(True) # telefono
        self.textCtrl8.Enable(True) # email
        self.textCtrl9.Enable(True) # cumple: dia
        self.textCtrl10.Enable(True) # cumple: mes
        self.textCtrl11.Enable(True) # direcion envio resumen
        self.richTextCtrl1.Enable(True) # observaciones
        self.richTextCtrl1.SetBackgroundColour(wx.Colour(255, 255, 255))
        self.textCtrl1.SetFocus() # codigo cliente
        self.radioButton1.Enable(True)
        self.radioButton1.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
        self.radioButton2.Enable(False)
        self.radioButton2.Bind(wx.EVT_SET_FOCUS, self.OnFocus)

    def habilitarGuardar(self):
        self.textCtrl1.Enable(True) # numero cliente
        self.textCtrl1.SetEditable(True)
        self.textCtrl2.Enable(True) # nombre
        self.textCtrl2.SetEditable(True)
        self.textCtrl2.Bind(wx.EVT_KILL_FOCUS, None)
        self.choice1.Enable(True) # tipo documento
        self.choice1.Bind(wx.EVT_SET_FOCUS, None)
        self.textCtrl3.Enable(True) #numero documento
        self.textCtrl3.SetEditable(True)
        self.choice2.Enable(True) # situacion fiscal
        self.choice2.Bind(wx.EVT_SET_FOCUS, None)
        self.textCtrl4.Enable(True) # direccion
        self.textCtrl4.SetEditable(True)
        self.textCtrl5.Enable(True) # fecha alta
        self.textCtrl5.SetEditable(True)
        self.choice3.Enable(True) # pais
        self.choice3.Bind(wx.EVT_SET_FOCUS, None)
        self.choice4.Enable(True) # provincia
        self.choice4.Bind(wx.EVT_SET_FOCUS, None)
        self.comboBox1.Enable(True) # localidad
        self.comboBox1.Bind(wx.EVT_SET_FOCUS, None)
        self.textCtrl6.Enable(True) # CP
        self.textCtrl6.SetEditable(True)
        self.textCtrl7.Enable(True) # telefono
        self.textCtrl7.SetEditable(True)
        self.textCtrl8.Enable(True) # email
        self.textCtrl8.SetEditable(True)
        self.textCtrl9.Enable(True) # cumple: dia
        self.textCtrl9.SetEditable(True)
        self.textCtrl10.Enable(True) # cumple: mes
        self.textCtrl10.SetEditable(True)
        self.textCtrl11.Enable(True) # direcion envio resumen
        self.textCtrl11.SetEditable(True)
        self.richTextCtrl1.Enable(True) # observaciones
        self.richTextCtrl1.SetEditable(True)
        self.textCtrl1.SetFocus() # nombre cliente
        self.radioButton1.Enable(True)
        self.radioButton1.Bind(wx.EVT_SET_FOCUS, None)
        self.radioButton2.Enable(True)
        self.radioButton2.Bind(wx.EVT_SET_FOCUS, None)

    def cargaDatos(self,cliente):
        idcliente = str(cliente["idcliente"])
        nombre  = str(cliente["nombre"])
        direccion = str(cliente["direccion"])
        localidad = str(cliente["localidad"])
        provincia = str(cliente["provincia"])
        telefono = str(cliente["telefono"])
        cp = str(cliente["cp"])
        email = str(cliente["email"])
        cumpledia = str(cliente["cumple"][:2])
        cumplemes = str(cliente["cumple"][-2:])
        situacionfiscal = str(cliente["situacionfiscal"])
        tipodoc = str(cliente["tipodoc"])
        nrodoc = str(cliente["nrodoc"])
        observaciones = str(cliente["observaciones"])
        fechaalta = str(cliente["fechaalta"])
        reciberesumen = True if str(cliente["reciberesumen"])=='1' else False
        donderesumen = str(cliente["donderesumen"])
        puntaje = str(cliente["acumulados"])
        if str(cliente["listanegra"])=="1":
            self.checkBox1.SetValue(True)
        self.textCtrl1.SetLabel(idcliente)
        self.textCtrl2.SetLabel(nombre)
        self.textCtrl3.SetLabel(nrodoc)
        self.textCtrl4.SetLabel(direccion)
        self.textCtrl5.SetLabel(fechaalta)
        self.textCtrl6.SetLabel(cp)
        self.textCtrl7.SetLabel(telefono)
        self.textCtrl8.SetLabel(email)
        self.textCtrl9.SetLabel(cumpledia)
        self.textCtrl10.SetLabel(cumplemes)
        self.textCtrl11.SetLabel(donderesumen)
        self.textCtrl12.SetLabel(puntaje)
        self.comboBox1.SetLabel(localidad)
        self.richTextCtrl1.SetValue(observaciones)
        self.radioButton1.SetValue(reciberesumen)
        for i,seleccion in enumerate(self.choice1.GetItems()):
            if tipodoc == seleccion:
                break
        self.choice1.SetSelection(i)
        for i,seleccion in enumerate(self.choice2.GetItems()):
            if situacionfiscal == seleccion:
                break
        self.choice2.SetSelection(i)
        for i,seleccion in enumerate(self.choice4.GetItems()):
            if provincia == seleccion:
                break
        self.choice4.SetSelection(i)
        self.habilitarBuscar()

    def buscarCliente(self):
        if self.textCtrl1.GetLabel()=="" and self.textCtrl2.GetLabel()=="":
            utiles.mensaje(None,"Debe introducir numero de cliente o nombre")
            self.textCtrl1.SetFocus()
            return
        if len(self.textCtrl1.GetLabel())>0:
            consultaSQL = "SELECT * FROM cliente WHERE idcliente='"+self.textCtrl1.GetLabel()+"'"
            resultado = consultasBD.ordenCrudaDict(consultaSQL)
            if resultado == () or resultado == None:
                utiles.mensaje(None,"Numero de Cliente no encontrado")
                self.textCtrl1.SetLabel("")
                self.textCtrl2.SetLabel("")
                self.textCtrl1.SetFocus()
                return
            self.cargaDatos(resultado[0])
            self.button2.SetFocus()
            return

        r1 = "SELECT * FROM cliente "
        r2 = "WHERE nombre LIKE '%"+self.textCtrl2.GetLabel()+"%' ORDER BY nombre"
        consultaSQL = r1 + r2
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if resultado == () or resultado == None or len(resultado)==0:
            utiles.mensaje(None,"No se encontraron clientes con los datos ingresados")
            self.textCtrl1.SetLabel("")
            self.textCtrl2.SetLabel("")
            self.textCtrl1.SetFocus()
            return
        if len(resultado)>1:
            import BuscarClientes
            dlg = BuscarClientes.Dialog1(self,resultado)
            try:
                dlg.ShowModal()
            finally:
                if dlg.seleccion == "":
                    return
                clientes = dlg.seleccion
                dlg.Destroy()
        else:
            clientes = resultado[0]
        self.cargaDatos(clientes)
        self.button2.SetFocus()
        return

    def OnLimpiar(self, event):
        if self.button1.GetLabel()=="BUSCAR":
            self.textCtrl1.SetLabel("")
            self.textCtrl2.SetLabel("")
            self.textCtrl3.SetLabel("")
            self.textCtrl4.SetLabel("")
            self.textCtrl5.SetLabel("")
            self.textCtrl6.SetLabel("")
            self.textCtrl7.SetLabel("")
            self.textCtrl8.SetLabel("")
            self.textCtrl9.SetLabel("")
            self.textCtrl10.SetLabel("")
            self.textCtrl11.SetLabel("")
            self.comboBox1.SetLabel("")
            self.richTextCtrl1.SetValue("")
            self.radioButton1.SetValue(False)
            self.radioButton2.SetValue(False)
            self.choice1.SetSelection(-1)
            self.choice2.SetSelection(-1)
            self.choice3.SetSelection(-1)
            self.choice4.SetSelection(-1)
            self.checkBox1.SetValue(False)
            self.textCtrl1.SetFocus()

    def OnBotonMultifuncion(self, event):
        if self.button1.GetLabel()=="ALTA":
            print "Alta de cliente"
            self.habilitarAlta()
            return
        if self.button1.GetLabel()=="BUSCAR":
            print "Buscar cliente"
            self.buscarCliente()
            if self.modificar:
                self.button1.SetLabel("GUARDAR")
                self.habilitarGuardar()
                self.textCtrl1.SetEditable(False)
                self.textCtrl1.Enable(False)
                self.textCtrl2.SetFocus()
            return
        if self.button1.GetLabel()=="GUARDAR":
            print "Guardar cliente"

